package br.com.o2solutions.siso.business.rule.viatura;

import java.util.List;

import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Component;

import br.com.o2solutions.core.exception.BusinessException;
import br.com.o2solutions.core.integration.repository.DataBaseIntegration;
import br.com.o2solutions.core.service.rule.Rule;
import br.com.o2solutions.siso.integration.entidade.TipoViatura;
import br.com.o2solutions.util.assertion.Assert;

/**
 * Classe responsável por realizar a validação da descrição do TipoViatura.
 * 
 * @author Ivan
 * @since 26/10/2010
 * 
 */
@Component("tipoViaturaInsertUpdateRule")
public class TipoViaturaInsertUpdateRule implements Rule<TipoViatura> {

	@Value("#{tipoViaturaDAO}")
	private DataBaseIntegration<TipoViatura> tipoViaturaDAO;

	@Override
	public void check(TipoViatura entity) throws BusinessException {

		List<TipoViatura> resultList = tipoViaturaDAO.findByNamedQuery(
				"TipoViatura.findByDescricao", entity.getDescricao());
		resultList.remove(entity);
		Assert.isEmpty(resultList, new BusinessException(
				"Viatura já cadastrada com a descrição informada.",
				"error.tipo.viatura.existis", entity.getDescricao()));
	}

}
